In a mobile cellular communication network a forward error correction (FEC) component is commonly determined and added to signals communicated between base stations and mobile units of the network. In addition, the signals are commonly interleaved prior to transmission to reduce the effect of possible burst errors in the network. A mobile unit or base station receiving an interleaved signal with added FEC components decodes and de-interleaves the signal. When a concatenated code (i.e., turbo code) is used for FEC, the transmitting station employs a turbo encoder to generate the code and the receiving unit employs a turbo decoder to process the code. The turbo encoder and the turbo decoder internally perform interleaving and de-interleaving.
The conventional approaches to implementing a turbo code internal interleaver include (i) straight forward implementation of the equation, Pi(i)=(f1*i+f2*i^2)mod K, (ii) implementation of the turbo code interleaver with a look up table, and (iii) an interleaver address generation scheme presented by Ericsson document 3GPP R1-063137 “Quadratic Permutation Polynomial Interleavers for LTE Turbo Coding,” Ericsson 2006. A disadvantage of the first approach is that multipliers are needed and therefore the hardware and cycle count is high. A disadvantage of the second approach is that a memory is needed for the look up table that requires additional memory accesses. A disadvantage of the third approach is that two recursion operations are needed per one address generation.
It would be desirable to have a turbo code interleaver that reduces the cycle count of a turbo encoder and decoder.